//package com.hjb.service.controller.product;
//
//import java.math.BigDecimal;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import javax.servlet.http.HttpServletRequest;
//
//import org.apache.commons.lang.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.hjb.service.common.CommonKeyValueService;
//import com.hjb.service.common.HolidayService;
//import com.hjb.service.config.constant.Constants;
//import com.hjb.service.domain.siteuser.SiteUser;
//import com.hjb.service.domain.siteuser.SiteUserAddRateExample;
//import com.hjb.service.domain.siteuseraccount.SiteUserAccount;
//import com.hjb.service.domain.siteuseraccount.SiteUserAccountExample;
//import com.hjb.service.domain.siteusercoupon.SiteUserCoupon;
//import com.hjb.service.domain.siteusercoupon.SiteUserCouponExample;
//import com.hjb.service.domain.siteuserenvelop.SiteUserEnvelopExample;
//import com.hjb.service.product.ProductService;
//import com.hjb.service.product.SiteUserBuyService;
//import com.hjb.service.user.SiteUserAccountService;
//import com.hjb.service.user.SiteUserAddRateService;
//import com.hjb.service.user.SiteUserCouponService;
//import com.hjb.service.user.SiteUserCurrentService;
//import com.hjb.service.user.SiteUserEnvelopService;
//import com.hjb.service.user.SiteUserService;
//import com.hjb.service.utils.HJBUT;
//import com.hjb.service.utils.MapUtil;
//import com.hjb.service.utils.TradeDateUtil;
//
///** 
// * 产品 Controller
// * @author zhangxl
// * @date 2017-07-20
// * @version 1.0
// */
//@RestController
//@RequestMapping("/product")
//public class ProductController {
//	
//	private Logger log = LoggerFactory.getLogger(getClass());
//
//	@Autowired
//	private ProductService productService;
//	@Autowired
//	private SiteUserService siteUserService;
//	@Autowired
//	private HolidayService holidayService;
//	@Autowired
//	private SiteUserCurrentService siteUserCurrentService;
//	@Autowired
//	private SiteUserAccountService siteUserAccountService;
//	@Autowired
//	private SiteUserCouponService siteUserCouponService;
//	@Autowired
//	private SiteUserBuyService siteUserBuyService;
//	@Autowired
//	private SiteUserEnvelopService siteUserEnvelopService;
////	@Autowired
////	private PayService payService;
//	@Autowired
//	private CommonKeyValueService commonKeyValueService;
//	@Autowired
//	private SiteUserAddRateService siteUserAddRateService;
//	
//	
//	/**
//	 * 产品列表
//	 * @param request
//	 * @return
//	 */
//	@RequestMapping("/list")
//	@ResponseBody
//	public Map<String, Object> productList(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		Map<String,Object> dataMap = new HashMap<String, Object>();
//		Map<String,Object> params = new HashMap<String, Object>();
//		try {
//			params.put("type", "0");
//			List<Map<String, Object>> product = productService.getProductList(params);
//			params.put("type", "1");
//			List<Map<String, Object>> productList = productService.getProductList(params);
//			params.put("type", "2");
//			List<Map<String, Object>> experiProduct = productService.getProductList(params);
//			dataMap.put("product", product.get(0));
//			dataMap.put("productList", productList);
//			dataMap.put("experiProduct", experiProduct.get(0));
//			resMap.put("data", dataMap);
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//		
//	}
//	
//	/**
//	 * 产品详情
//	 * @param request
//	 * @return
//	 */
//	@RequestMapping("/info")
//	@ResponseBody
//	public Map<String, Object> productInfo(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		Map<String,Object> dataMap = new HashMap<String, Object>();
//		Map<String,Object> params = new HashMap<String, Object>();
//		try {
//			String productId = request.getParameter("product_id");
//			if(StringUtils.isBlank(productId)){
//				resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//				resMap.put("result_info", "参数异常");	
//				return resMap;
//			}
//			
//			//检查是否风险测评
//			String riskEvaluation = "去测评";
//			SiteUser siteUser = (SiteUser) request.getSession().getAttribute("siteUser");
//			if (siteUser != null) {
//				SiteUser querySiteUser = new SiteUser();
//				querySiteUser.setUserId(siteUser.getUserId());
//				siteUser = siteUserService.selectOneByExample(querySiteUser);
//				if(siteUser.getRiskLevel() !=null){
//					riskEvaluation = "";
//				}
//			}
//			
//			params.put("productId", productId);
//			Map<String, Object> productMap = productService.getProductInfo(params);
//			if(productMap !=null && Constants.PRODUCT_TYPE_2 ==Integer.parseInt(String.valueOf(productMap.get("productType")))){
//				BigDecimal saleAmount = siteUserBuyService.queryBidAmountByProductId(productId);
//				if(saleAmount ==null){
//					saleAmount = new BigDecimal(10000);
//				}else{
//					saleAmount = saleAmount.add(new BigDecimal(10000));
//				}
//				productMap.put("saleAmount", "¥"+saleAmount.setScale(2, BigDecimal.ROUND_DOWN));
//			}
//			
//			List<Map<String,Object>> resInvestDynaList = siteUserBuyService.queryInvestDynaList(params);
//			//投资动态
//			List<Map<String, Object>> investDynaList = new ArrayList<Map<String,Object>>();
//			if(resInvestDynaList.size()>0){
//				investDynaList =resInvestDynaList;
//			}else{
//				for(int i=0;i<50;i++){
//					Map<String, Object> dysnMap = new HashMap<String, Object>();
//					int res = i*100;
//					dysnMap.put("infoStr", "用户186****1399 投资"+res+"元");
//					investDynaList.add(dysnMap);
//				}
//			}
//			
//			BigDecimal productRate = new BigDecimal(String.valueOf(productMap.get("rate")));
//			String addRateStr = String.valueOf(productMap.get("addRate"));
//			if(StringUtils.isNotBlank(addRateStr)){
//				productRate = productRate.add(new BigDecimal(addRateStr));
//			}
//			String productRateStr = String.valueOf(productRate);
//			
//			//今日万元收益
//			double thousandProfit = HJBUT.getThousandProfit(Double.parseDouble(productRateStr));
//			
//			dataMap.put("riskEvaluation", riskEvaluation);
//			dataMap.put("thousandProfit", thousandProfit);
//			dataMap.put("product", productMap);
//			dataMap.put("investDynaList", investDynaList);
//			resMap.put("data", dataMap);
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//		
//	}
//	
//	/**
//	 * 产品申购信息
//	 * @return
//	 */
//	@RequestMapping("/bidProductInfo")
//	@ResponseBody
//	public Map<String,Object> bidOrderInfo(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		Map<String,Object> dataMap = new HashMap<String, Object>();
//		Map<String,Object> params = new HashMap<String, Object>();
//		try{
//			SiteUser siteUser = (SiteUser) request.getSession().getAttribute("siteUser");
////			siteUser = new SiteUser();
////			siteUser.setUserId(30010);
//			//会话过期
//			if (siteUser == null) {
//				resMap.put("result_code", MapUtil.INTF_ERR_CODE_416);
//				resMap.put("result_info", "会话过期");
//				return resMap;
//			}
//			String userId = String.valueOf(siteUser.getUserId());
//			String productId = request.getParameter("product_id");
//			if(StringUtils.isBlank(productId)){
//				resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//				resMap.put("result_info", "参数异常");	
//				return resMap;
//			}
//			
//			params.put("productId", productId);
//			Map<String, Object> productMap = productService.getProductInfo(params);
//			if(productMap == null){
//				resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//				resMap.put("result_info", "数据异常！");	
//				return resMap;
//			}
//			String useCouponMsg = "";
//			//产品类型，默认定期
//			int productType = Constants.PRODUCT_TYPE_2;
//			//活期产品查询使用加息券
//			if(productMap.get("productType") != null && Integer.parseInt(String.valueOf(productMap.get("productType"))) ==Constants.PRODUCT_TYPE_1){
//				SiteUserAddRateExample userAddRateExample = new SiteUserAddRateExample();
//				userAddRateExample.createCriteria().andUserIdEqualTo(siteUser.getUserId()).andStatusEqualTo(Constants.COMMON_STATUS_0);
//				int useCouponNum = siteUserAddRateService.selectByExampleCount(userAddRateExample);
//				if(useCouponNum >0){
//					useCouponMsg = "使用新加息券则使用中的加息券失效";
//				}
//				productType = Constants.PRODUCT_TYPE_1;
//			}
//			
//			//体验金金额
//			BigDecimal experienceAmount = BigDecimal.ZERO;
//			
//			//活期金额 totalCurrent = 持有金额 + 购买未确认金额
//			BigDecimal totalCurrent = siteUserCurrentService.queryTotalCurrentByUserId(userId);
//			if(totalCurrent ==null){
//				totalCurrent = BigDecimal.ZERO;
//			}
//			//查询用户持有活期金额
//			SiteUserAccountExample userAccountExample = new SiteUserAccountExample();
//			userAccountExample.createCriteria().andUserIdEqualTo(Integer.parseInt(userId));
//			List<SiteUserAccount> userAccountList = siteUserAccountService.selectByExample(userAccountExample);
//			if(userAccountList.size() > 0){
//				SiteUserAccount userAcct = userAccountList.get(0);
//				if(userAcct.getCurrentAccount() != null){
//					totalCurrent = totalCurrent.add(userAcct.getCurrentAccount());
//				}
//				if(userAcct.getExperienceAccount() != null){
//					experienceAmount = userAcct.getExperienceAccount();
//				}
//			}
//			
//			//查询用户可用加息券数量
//			SiteUserCouponExample userCouponExample = new SiteUserCouponExample();
//			userCouponExample.createCriteria().andStatusEqualTo(Constants.COMMON_STATUS_0).andUserIdEqualTo(Long.parseLong(userId))
//			.andProductTypeEqualTo(productType);
//			int couponNum = siteUserCouponService.selectByExampleCount(userCouponExample);
//			
//			//定期产品优惠数量增加红包数量
//			SiteUserEnvelopExample userEnvelopExample = new SiteUserEnvelopExample();
//			userEnvelopExample.createCriteria().andUserIdEqualTo(Long.parseLong(userId)).andStatusEqualTo(Constants.COMMON_STATUS_0)
//			.andProductTypeEqualTo(productType);
//			couponNum += siteUserEnvelopService.countByExample(userEnvelopExample);
//			
//			//查询用户加息券列表
//			userCouponExample = new SiteUserCouponExample();
//			userCouponExample.createCriteria().andStatusEqualTo(Constants.COMMON_STATUS_0).
//			andUserIdEqualTo(Long.parseLong(userId)).andMinInvestAmountGreaterThanOrEqualTo(totalCurrent).andProductTypeEqualTo(productType);
//			List<SiteUserCoupon> userCouponList = siteUserCouponService.selectByExample(userCouponExample);
//			List<String> couponList = new ArrayList<String>();
//			int i= 0;
//			for(SiteUserCoupon coupon:userCouponList){
//				if(i<2){
//					String resStr = "您有1张"+coupon.getAmount()+"%的活期加息券，持有金额超过"+coupon.getMinInvestAmount()+"元可加息"+coupon.getActiveDays()+"天";
//					couponList.add(resStr);
//				}
//				i++;
//			}
//			
//			//资金回款方式
//			List<Map<String,Object>> returnTypeList = commonKeyValueService.queryCommonList(Constants.COMMON_RETURN_TYPE);
//			//支付方式
//			List<Map<String,Object>> payTypeList = commonKeyValueService.queryCommonList(Constants.COMMON_PAY_TYPE);
//			
//			//计算预计计息日、利息到账日
//			List<String> holidayList = holidayService.queryHolidayList();
//			
//			String nextDay = TradeDateUtil.getDayExceptWeekend(HJBUT.currentDate(1));
//			nextDay = TradeDateUtil.getDayAfterHoliday(nextDay, holidayList);
//			
//			String dateStr = "(预计"+nextDay+"计算份额,"+HJBUT.currentDate(nextDay, 1)+"到账)";
//			dateStr =dateStr.replaceAll("-", ".");
//			
//			dataMap.put("experienceAmount", experienceAmount.setScale(2, BigDecimal.ROUND_DOWN));
//			dataMap.put("useCouponMsg", useCouponMsg);
//			dataMap.put("returnType", returnTypeList);
//			dataMap.put("payType", payTypeList);
//			dataMap.put("interestDateStr", dateStr);
//			dataMap.put("totalCurrent", totalCurrent.setScale(2, BigDecimal.ROUND_DOWN));
//			dataMap.put("couponNum", couponNum);
//			dataMap.put("couponList", couponList);
//			dataMap.put("product", productMap);
//			resMap.put("data", dataMap);
//			
//		}catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		return resMap;
//	}
//	
//	/**
//	 * 活期产品申购
//	 * @return
//	 */
//	@RequestMapping("/bidCurrent")
//	@ResponseBody
//	public Map<String,Object> bidCurrentOrder(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {
////			SiteUser siteUser = (SiteUser) request.getSession().getAttribute("siteUser");
//			//会话过期
////			if (siteUser == null) {
////				resMap.put("result_code", MapUtil.INTF_ERR_CODE_416);
////				resMap.put("result_info", "会话过期");
////				return resMap;
////			}
////			String userIdStr = String.valueOf(siteUser.getUserId());
//			String productId = request.getParameter("product_id");
//			String bidAmountStr = request.getParameter("bid_amount");
////			String couponId = request.getParameter("coupon_id");
////			String sysOs = request.getParameter("os");
//			
//			if( StringUtils.isBlank(productId) || StringUtils.isBlank(bidAmountStr)){
//				log.info("参数异常！");
//				resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//				resMap.put("result_info", "参数异常！");
//				return resMap;
//			}
//			resMap = productService.buyCurrentProduct(request);
//			
//		} catch (Exception e) {
//			System.out.println(e.getStackTrace());
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 定期产品申购
//	 * @return
//	 */
//	@RequestMapping("/bidRegular")
//	@ResponseBody
//	public Map<String,Object> bidRegularOrder(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {
////			String userIdStr = request.getParameter("user_id");
//			String productId = request.getParameter("product_id");
//			String bidAmountStr = request.getParameter("bid_amount");
////			String couponId = request.getParameter("coupon_id");
////			String redPacketId = request.getParameter("red_id");
//			String returnType = request.getParameter("return_type");
//			String payType = request.getParameter("pay_type");
//			String tradePwd = request.getParameter("trade_pwd");
////			String sysOs = request.getParameter("os");
//			
//			if(StringUtils.isBlank(productId) || StringUtils.isBlank(bidAmountStr)
//				|| StringUtils.isBlank(payType) || StringUtils.isBlank(returnType) || StringUtils.isBlank(tradePwd)){
//				log.info("参数异常！");
//				resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//				resMap.put("result_info", "参数异常！");
//				return resMap;
//			}
//			
//			resMap = productService.buyRegularProduct(request);
//			
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 我的活期
//	 * @return
//	 */
//	@RequestMapping("/myCurrentAccount")
//	@ResponseBody
//	public Map<String,Object> myCurrentAccount(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {	
//			resMap = productService.myCurrentAccount(request);
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 我的定期
//	 * @return
//	 */
//	@RequestMapping("/myFixedAccount")
//	@ResponseBody
//	public Map<String,Object> myFixedAccount(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {	
//			resMap = productService.myFixedAccount(request);
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 活期赎回详情
//	 * @return
//	 */
//	@RequestMapping("/currentRedeemInfo")
//	@ResponseBody
//	public Map<String,Object> currentRedeemInfo(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {	
//			resMap = productService.currentRedeemInfo(request);
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 活期赎回
//	 * @return
//	 */
//	@RequestMapping("/currentRedeem")
//	@ResponseBody
//	public Map<String,Object> currentRedeem(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {	
//			resMap = productService.currentRedeem(request);
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 体验金 产品申购
//	 * @return
//	 */
//	@RequestMapping("/bidExperience")
//	@ResponseBody
//	public Map<String,Object> bidExperienceOrder(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {
//			
//			resMap = productService.buyExperienceProduct(request);
//			
//		} catch (Exception e) {
//			System.out.println(e.getStackTrace());
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 我的体验金
//	 * @return
//	 */
//	@RequestMapping("/myExperience")
//	@ResponseBody
//	public Map<String,Object> myExperience(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {
//			
//			resMap = productService.myExperienceAccount(request);
//			
//		} catch (Exception e) {
//			System.out.println(e.getStackTrace());
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 修改定期回款方式
//	 * @return
//	 */
//	@RequestMapping("/changeFixedReturnType")
//	@ResponseBody
//	public Map<String,Object> changeFixedReturnType(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {
//			
//			resMap = productService.changeFixedReturnType(request);
//			
//		} catch (Exception e) {
//			System.out.println(e.getStackTrace());
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	/**
//	 * 查看定期合同
//	 * @return
//	 */
//	@RequestMapping("/queryFixedAgreement")
//	@ResponseBody
//	public Map<String,Object> queryFixedAgreement(HttpServletRequest request){
//		Map<String,Object> resMap =MapUtil.getRetMap();
//		try {
//			
//			resMap = productService.queryFixedAgreement(request);
//			
//		} catch (Exception e) {
//			log.info(e.getMessage());
//			resMap.put("result_code", MapUtil.INTF_ERR_CODE);
//			resMap.put("result_info", "调用失败");	
//		}
//		
//		return resMap;
//	}
//	
//	
//}
